From a9ff598b27fb1a2c312d94a75755af940a09ce2e Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Fri, 9 Sep 2005 10:31:36 -0600 Subject: [PATCH] Xen-ia64-specific changes to adapt to recent xen-unstable changes Signed-off-by: Dan Magenheimer --- xen/arch/ia64/xen/domain.c | 16 ++++++++++++++++ xen/arch/ia64/xen/hypercall.c | 2 +- xen/arch/ia64/xen/xensetup.c | 15 +++++++++++++++ xen/include/asm-ia64/mm.h | 4 ++-- xen/include/asm-ia64/xenpage.h | 19 +++++++++++++++++++ xen/include/asm-ia64/xensystem.h | 1 + 6 files changed, 54 insertions(+), 3 deletions(-) diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index efd2734400..328aabbe5f 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -1101,3 +1101,19 @@ void vcpu_migrate_cpu(struct vcpu *v, int newcpu) set_bit(_VCPUF_cpu_migrated, &v->vcpu_flags); v->processor = newcpu; } + +void sync_vcpu_execstate(struct vcpu *v) +{ + ia64_save_fpu(v->arch._thread.fph); +#ifdef CONFIG_VTI + if (VMX_DOMAIN(v)) + vmx_save_state(v); +#else + if (0) do {} while(0); +#endif + else { + if (IA64_HAS_EXTRA_STATE(v)) + ia64_save_extra(v); + } + // FIXME SMP: Anything else needed here for SMP? +} diff --git a/xen/arch/ia64/xen/hypercall.c b/xen/arch/ia64/xen/hypercall.c index 8abaa48058..4a7eb63633 100644 --- a/xen/arch/ia64/xen/hypercall.c +++ b/xen/arch/ia64/xen/hypercall.c @@ -151,7 +151,7 @@ ia64_hypercall (struct pt_regs *regs) regs->r8 = do_dom0_op(regs->r14); break; - case __HYPERVISOR_dom_mem_op: + case __HYPERVISOR_memory_op: #ifdef CONFIG_VTI regs->r8 = do_dom_mem_op(regs->r14, regs->r15, regs->r16, regs->r17, regs->r18); #else diff --git a/xen/arch/ia64/xen/xensetup.c b/xen/arch/ia64/xen/xensetup.c index 92fee6a514..a9eabb41be 100644 --- a/xen/arch/ia64/xen/xensetup.c +++ b/xen/arch/ia64/xen/xensetup.c @@ -11,6 +11,7 @@ #include #include #include +#include //#include #include //#include @@ -384,3 +385,17 @@ printk("About to call init_trace_bufs()\n"); printk("About to call startup_cpu_idle_loop()\n"); startup_cpu_idle_loop(); } + +void arch_get_xen_caps(xen_capabilities_info_t *info) +{ + char *p=info->caps; + + *p=0; + + p+=sprintf(p,"xen_%d.%d_ia64 ",XEN_VERSION,XEN_SUBVERSION); + + BUG_ON((p-info->caps)>sizeof(*info)); + + if(p>info->caps) *(p-1) = 0; +} + diff --git a/xen/include/asm-ia64/mm.h b/xen/include/asm-ia64/mm.h index f7d5af368e..93acb34776 100644 --- a/xen/include/asm-ia64/mm.h +++ b/xen/include/asm-ia64/mm.h @@ -415,7 +415,7 @@ extern unsigned long *mpt_table; /* If pmt table is provided by control pannel later, we need __get_user * here. However if it's allocated by HV, we should access it directly */ -#define phys_to_machine_mapping(d, gpfn) \ +#define get_mfn_from_pfn(d, gpfn) \ ((d) == dom0 ? gpfn : \ (gpfn <= d->arch.max_pfn ? (d)->arch.pmt[(gpfn)] : \ INVALID_MFN)) @@ -424,7 +424,7 @@ extern unsigned long *mpt_table; machine_to_phys_mapping[(mfn)] #define __gpfn_to_mfn(_d, gpfn) \ - phys_to_machine_mapping((_d), (gpfn)) + get_mfn_from_pfn((_d), (gpfn)) #define __gpfn_invalid(_d, gpfn) \ (__gpfn_to_mfn((_d), (gpfn)) & GPFN_INV_MASK) diff --git a/xen/include/asm-ia64/xenpage.h b/xen/include/asm-ia64/xenpage.h index 4025eb1e51..742978a61b 100644 --- a/xen/include/asm-ia64/xenpage.h +++ b/xen/include/asm-ia64/xenpage.h @@ -29,6 +29,25 @@ typedef union xen_va { unsigned long l; void *p; } xen_va; + +static inline int get_order_from_bytes(physaddr_t size) +{ + int order; + size = (size-1) >> PAGE_SHIFT; + for ( order = 0; size; order++ ) + size >>= 1; + return order; +} + +static inline int get_order_from_pages(unsigned long nr_pages) +{ + int order; + nr_pages--; + for ( order = 0; nr_pages; order++ ) + nr_pages >>= 1; + return order; +} + #endif #undef __pa diff --git a/xen/include/asm-ia64/xensystem.h b/xen/include/asm-ia64/xensystem.h index 3cbb3c34a5..d5082ac7a8 100644 --- a/xen/include/asm-ia64/xensystem.h +++ b/xen/include/asm-ia64/xensystem.h @@ -22,6 +22,7 @@ #endif // CONFIG_VTI #define XEN_START_ADDR 0xf000000000000000 +#define HYPERVISOR_VIRT_START 0xf000000000000000 #undef KERNEL_START #define KERNEL_START 0xf000000004000000 #undef PERCPU_ADDR -- 2.30.2